package com.hison.service.impl;

import com.hison.domian.entity.AliyunProperties;
import com.hison.enums.AppHttpCodeEnum;
import com.hison.enums.PlatformEnum;
import com.hison.exception.SystemException;
import com.hison.service.UploadService;
import com.hison.util.AliYun;
import com.hison.util.ResponseResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

/**
 * @ClassName: UploadServiceImpl
 * @Descripiton: 文件上传类
 * @Author: 小郑
 * @Date： 2024/1/13 20:46
 * @Version：1.8
 **/
@Service
public class UploadServiceImpl implements UploadService {
    @Autowired
    private AliyunProperties aliyunProperties;

    @Override
    public ResponseResult upload(MultipartFile file) {
        System.out.println(aliyunProperties.toString());
        //获取原始文件名
        String originalFilename = file.getOriginalFilename();
        //获取文件大小
        long fileSize = file.getSize();
        // 判断文件大小是否超过2MB（2MB=2*1024*1024 bytes）
        if (fileSize > 2 * 1024 * 1024) {
            // 抛出文件大小超过限制的异常
            throw new SystemException(AppHttpCodeEnum.FILE_SIZE_ERROR);
        }

        //对原始文件名进行判断大小。只能上传png或jpg文件
        if(!originalFilename.endsWith(".png") && !originalFilename.endsWith(".jpg")){
            //AppHttpCodeEnum是我们在huanf-framework写的枚举类，FILE_TYPE_ERROR代表文件类型错误的提示
            throw new SystemException(AppHttpCodeEnum.FILE_TYPE_ERROR);
        }
        return AliYun.uploadFileToOss(PlatformEnum.AVATAR, file, aliyunProperties);
    }

    @Override
    public ResponseResult delete(String fileUrl) {
        return AliYun.delete(fileUrl, aliyunProperties);
    }
}